package com.mutual.commom.controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;

import com.alibaba.druid.util.StringUtils;
//import com.google.gson.Gson;
//import com.soft.common.constant.GeneralConstant;
//import com.soft.common.pojo.PojoObject;
//import com.soft.common.util.SystemUtil;
//import com.soft.pojo.system.User;
//import com.soft.service.system.DictionaryService;

/**
 * @desc  controller基类
 * @date 2015年9月2日 
 * @author chenshuaining
 */
@SuppressWarnings("unchecked")
public class BaseController {
	
	/**
	 * 新增
	 */
	protected final static int ACTIONTYPE_ADD=1; 
	/**
	 * 更新
	 */
	protected final static int ACTIONTYPE_UPDATE=2; 
	
//    protected Gson gson = new Gson();
    
    @Autowired  
    protected  HttpServletRequest request;
    
    @Autowired  
    protected  HttpServletResponse response;
    
//	@Resource
//	protected DictionaryService dictionaryService;
    
    protected int pageNo = 1;
	protected int pageSize = 5;
	protected int pageTotal = 1;
	protected int total = 0;

	/************ get set ***************/
	public int getPageNo() {
		return pageNo;
	}

	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getPageTotal() {
		pageTotal = total / pageSize;
		if (total % pageSize > 0)
			pageTotal++;
		return pageTotal;
	}

	public void setPageTotal(int pageTotal) {
		this.pageTotal = pageTotal;
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}
    
    
//    public Log getLog() {
//        return log;
//    }
//    public void writeEasyUiGrid(Page page, List arrData, HttpServletResponse response) throws Exception{
//        if(page ==null || arrData ==null){
//            throw new RuntimeException("分页错误");
//        }
//        String json = "{\"total\":"+page.getTotalRecord()+" , \"rows\":"+gson.toJson(arrData)+"}";
//        response.getWriter().write(json);
//    }
//    
//    public void writeEasyUiComBoBox( List<Dictionarys> arrDict, HttpServletResponse response) throws Exception{
//        String json =gson.toJson(arrDict);
//        response.getWriter().write(json);
//    }
//    
//    public void writeEasyUiMapComBoBox( List<Map<String,Object>> arrDict, HttpServletResponse response) throws Exception{
//        String json =gson.toJson(arrDict);
//        response.getWriter().write(json);
//    }
//    
//    public void writeTrueAjaxRs(HttpServletResponse response, String message) throws Exception{
//        if(message != null && !"".equals(message))
//            response.getWriter().write("{\"success\":\"true\",\"message\":\""+message+"\"}");
//        else
//            response.getWriter().write("{\"success\":\"true\",\"message\":\"保存成功！\"}");
//    }
//    public void writeFalseAjaxRs(HttpServletResponse response, String message) throws Exception{
//        if(message != null && !"".equals(message))
//            response.getWriter().write("{\"success\":\"false\",\"message\":\""+message+"\"}");
//        else
//            response.getWriter().write("{\"success\":\"false\",\"message\":\"保存失败！\"}");
//    }
//    
//    public void setOperateDataLog(Object obj){
//        String jsonStr = gson.toJson(obj);
//        if(StringUtils.isNotEmpty(jsonStr) && jsonStr.length() >1000){
//            jsonStr = jsonStr.substring(0, 1000);
//        }
//        log.setOperateData(jsonStr);
//    }
//    /**
//     * 获取当前登录用户
//     * @return
//     */
//    public User getCurrentUser(){
//    	return (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
//    }
	
	public String getBasePath() {
		String basePath = request.getScheme() + "://" + request.getServerName()
				+ ":" + request.getServerPort() + request.getContextPath()+"/";
		return basePath;
	}
	
	public String getContextPath(){
		return request.getContextPath();
	}
	
	public HttpSession getSession(){
		return request.getSession();
	}
	
//	public User getCurrentUser(){
//		return (User)getSession().getAttribute(GeneralConstant.CURRENT_USER);
//	}
//	
//	public List<Map<String,Object>> getUserPermissions(){
//		return (List<Map<String,Object>>)getSession().getAttribute(GeneralConstant.PERMISSIONS);
//	}
//	
//	public <T> void setDataList(List<T> dataList,Map<String,Object> param,int total){
//		request.setAttribute("dataList", dataList);
//		request.setAttribute("total", total);
//		request.setAttribute("pageTotal", getPageTotal());
//		request.setAttribute("pageNo", SystemUtil.getPageNo(param.get("pageNo")));
//		request.setAttribute("status", param.get("status"));
//		this.setNavigationBar(param);
//	}
//	
//	protected void print(Object o) throws IOException {
//		response.setCharacterEncoding("UTF-8");
//		response.getWriter().print(gson.toJson(o));
//	}
//	
//	protected int getIntValue(Object o){
//		return SystemUtil.getInt(o);
//	}
//	
//	protected boolean isNull(Object o){
//		return o==null||"".equals(o);
//	}
//	
//	protected void setPojoCreateUserId(PojoObject object){
//		int userId=getCurrentUser().getUserId();
//		object.setCreateUserId(userId);
//		object.setUpdateUserId(userId);
//	}
//	/**
//	 * type 1 新增 2 更新
//	 * @param object
//	 * @param type
//	 */
//	protected void setPojoCreateUserId(PojoObject object,int type){
//		int userId=getCurrentUser().getUserId();
//		Date nowDate=new Date();
//		if(type==ACTIONTYPE_ADD){
//			object.setCreateUserId(userId);
//			object.setCreateDate(nowDate);
//		}
//		object.setUpdateDate(nowDate);
//		object.setUpdateUserId(userId);
//	}
//	
//	/**
//	 * 设置导航条内容展示
//	 * @param treeId
//	 * @param treeListMap
//	 */
//	protected void setNavigationBar(Map<String, Object> param){
//		int treeId=getIntValue(param.get("treeId"));
//		int treePid=getIntValue(param.get("treePid"));
//		List<String> treeNameList=new ArrayList<String>(3);
//		String treeName1=(String)getTreeObjById(treePid).get("treeName");
//		String treeName2=null;
//		Map<String,Object> treeObj=getTreeObjById(treeId);
//		if(treeObj!=null){
//			treeName2=(String)treeObj.get("treeName");
//		}
//		treeNameList.add(treeName1);
//		if(!StringUtils.isEmpty(treeName2)){
//			treeNameList.add(treeName2);
//		}
//		request.setAttribute("navigationBar", treeNameList);
//	}
//	
//	
//	/**
//	 * 通过id查询
//	 * @param treeId
//	 * @return
//	 */
//	private Map<String,Object> getTreeObjById(int treeId){
//		List<Map<String,Object>> treeListMap=getUserPermissions();
//		Map<String,Object> treeObj=null;
//		for(Map<String,Object> map:treeListMap){
//			if(getIntValue(map.get("treeId"))==treeId){
//				treeObj=map;
//				break;
//			}
//		}
//		return treeObj;
//	}
}
